/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ManagedBeans;

import Geral.ErroInternoException;
import Geral.Fachada;
import Modalidade.Modalidade;
import Modalidade.ModalidadeExistenteException;
import Modalidade.ModalidadeInexistenteException;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;

/**
 *
 * @author Ivaldo
 */
@ManagedBean
@SessionScoped
public class ManagedBeanModalidade {

    private Fachada fachada;
    private Modalidade modalidade;
    private EntityManager em;

    public ManagedBeanModalidade() {
        this.modalidade = new Modalidade();
    }

    public ManagedBeanModalidade(Modalidade mod) {
        this.modalidade = mod;
    }

    public Modalidade getModalidade() {
        return modalidade;
    }

    public void setModalidade(Modalidade modalidade) {
        this.modalidade = modalidade;
    }

    public String adicionarModalidade() {
        try {
            this.fachada.adicionarModalidade(modalidade);
            FacesContext contexto = FacesContext.getCurrentInstance();
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, null, "Cadastro realizado com sucesso !");
            contexto.addMessage(null, msg);
            this.modalidade = new Modalidade();
        } catch (ErroInternoException e) {
            FacesContext contexto = FacesContext.getCurrentInstance();
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Erro Interno", "Ocorreu um erro interno inesperado" + e.getMessage());
            contexto.addMessage(null, msg);
        } catch (ModalidadeExistenteException e) {
            FacesContext contexto = FacesContext.getCurrentInstance();
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", "Esta Modalidade já foi cadastrada! " + e.getMessage());
            contexto.addMessage(null, msg);
        }
        return null;
    }
    
    public String removerModalidade(){
        try{
            this.fachada.removerModalidade(modalidade.getId());
            return "lista-html.xhtml";
        }catch(ErroInternoException e){
            return "ErroInterno.xhtml";
        }catch(ModalidadeInexistenteException e){
            return "ModalidadeInexistente.xhtml";
        }
    }
    
    public String buscarModalidade(){
        try{
            this.fachada.buscarModalidade(modalidade.getId());
            return "InformacoesModalidade.xhtml";
        }catch(ErroInternoException e){
            return "ErroInterno.xhtml";
        }catch(ModalidadeInexistenteException e){
            return "ModadlidadeInexistente.xhtml";
        }
    }
    
    public String atualizarModalidade(){
        try{
            this.fachada.atualizarModalidade(modalidade);
            FacesContext contexto = FacesContext.getCurrentInstance();
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, null, "Atualização concluida");
            contexto.addMessage(null, msg);
        }catch(ErroInternoException e){
            FacesContext contexto = FacesContext.getCurrentInstance();
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro Interno", "Ocorreu um erro inesperado");
            contexto.addMessage(null, msg);
            return null;
        }catch(ModalidadeInexistenteException e){
            
        }
        return null;
    }
    
    public List<Modalidade> listaModalidades() throws ErroInternoException{
        try{
            List<Modalidade> listaModalidades = this.fachada.listaModalidade(modalidade);
            return listaModalidades;
        }catch(ErroInternoException e){
            throw new ErroInternoException(e);
        }
    }
}
